﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OracleClient;
using bi4homev3.Entidades;

namespace bi4homev3.Acceso_a_Datos
{
    //Clase especifica de Oracle para manejo de Medidas
    public class OracleMedidaDAO : MedidaDAO
    {
        // metodo para relacionar Medidas con elusuario que los creo y el Servicio afectado por la medida
        //Must check BUG no se maneja el id del usuario, por ende, se debe buscar en la BD
        //la ultima medida registrada para relacionarla
        //esto puede ser fuente de errores de ejecucion en un ambiente multiusuario
        public void insertarRelacion(Medida med)
        {
            #region Creacion de objetos DAO, Asignacion de Parametros y Ejecucion del Procedimiento de BD
            OracleConnection conexion = FabricaOracleDAO.Crear();
            OracleCommand comando = new OracleCommand("APLICACION.RELACIONARMEDIDA", conexion);
            comando.CommandType = CommandType.StoredProcedure;
            comando.Parameters.Add(new OracleParameter("usr", OracleType.VarChar, 30));
            comando.Parameters.Add(new OracleParameter("id_servicio", OracleType.Number, 4));
            comando.Parameters["usr"].Value = med.FkUser;
            comando.Parameters["id_servicio"].Value =med.Servicio;
            comando.ExecuteScalar();
            #endregion
            FabricaOracleDAO.cerrarConexion();
        }
        //Metodo de insercion de nueva Medida
        public void InsertarMedida1(Medida nueva, string usrname)
        {
            #region Creacion de Obj DAO, asignacion de parametros y de valores y Ejecucion del Procedimiento
            OracleConnection conexion = FabricaOracleDAO.Crear();
            OracleCommand comando = new OracleCommand("APLICACION.AGREGARMEDIDA", conexion);
            comando.CommandType = CommandType.StoredProcedure;
            comando.Parameters.Add(new OracleParameter("nombre", OracleType.VarChar, 100));
            comando.Parameters.Add(new OracleParameter("descripcion", OracleType.VarChar, 4000));
            comando.Parameters.Add(new OracleParameter("fechaini", OracleType.VarChar, 100));
            comando.Parameters.Add(new OracleParameter("fechafin", OracleType.VarChar, 100));
            comando.Parameters.Add(new OracleParameter("usuario", OracleType.VarChar, 100));
            comando.Parameters["nombre"].Value = nueva.Nombre;
            comando.Parameters["descripcion"].Value = nueva.Descripcion;
            comando.Parameters["fechaini"].Value = nueva.FechaInicio;
            comando.Parameters["fechafin"].Value = nueva.FechaFin;
            comando.Parameters["usuario"].Value = usrname;
            comando.ExecuteScalar();
            #endregion
            FabricaOracleDAO.cerrarConexion();
        }
    }
}
